package 微服务.SpringCloud_1.http客户端Feign_4.Feign的最佳实践_4;

/**
 * Feign的最佳实践
 */
public class index {
    /**
     * 最佳实践：企业在使用时，出现了许多问题，踩了很多坑之后总结出来的一个最佳使用方式<p></p>
     * <p>
     * 方式一：继承。给消费者的FeignClient和提供者的Controller定义统一的父接口作为标准（因为FeignClient中的方法和Controller中的方法声明是一样的）<p>
     * 但方式一我们不推荐（spring官方也不推荐），这种方式使得服务和客户端之间接口共享，造成了紧耦合。并且这种方式对SpringMVC是不起作用的，因为方法参数是不能继承的<p></p>
     * <p>
     * 方式二：抽取。将FeignClient抽取为独立模块，并把与接口有关的POJO、默认的Feign配置都放在这个模块中，提供给所有消费者使用<p>
     * 这样做的好处是：需要远程调用的服务不需要再自己写客户端了，也不用自己写POJO了，也不用自己写配置了<p>
     * 需要远程调用时只需要引入这个独立模块的依赖，然后直接调用就行了<p>
     * 同时这种方法也有弊端：我们把所有的接口都写进这个模块内，但使用时如果只使用少数接口，就显得十分浪费<p></p>
     * <p>
     * 综上，其实没有完美的解决方案，需要根据实际需要来选择<p></p>
     * <p>
     * 抽取FeignClient的步骤：见图片“步骤.png”<p>
     * 做完这些步骤之后，我们会发现FeignClient无法完成注入<p>
     * 这时候我们就要<p>
     * 1、去指定FeignClient的包扫描路径，让Spring帮我们完成注入<p>
     * 2、指定FeignClient字节码完成注入<p>
     * 详见图片“解决方法.png”<p>
     *
     * @param args
     */
    public static void main(String[] args) {

    }


}
